home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / OCEMail.mod < prev    next >
Encoding:
Text File  |  1995-10-27  |  49.3 KB  |  1,649 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        OCEMail.mod
  3.  
  4.      Contains:    Apple Open Collaboration Environment OCEMail Interfaces.
  5.  
  6.      Version:    Technology:    AOCE Toolbox 1.02
  7.                  Package:    Universal Interfaces 2.1ß1 in “MPW Prerelease” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE OCEMail;
  23.  
  24. IMPORT SYSTEM, Types, AppleTalk, Files, TextEdit, OCE, OCEAuthDir, OCEMessaging;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29. TYPE
  30.     MSAMIOCompletionUPP* = Types.UniversalProcPtr;
  31.  
  32.     MailMsgRef* = LONGINT;
  33.  
  34. (* reference to an open msam queue *)
  35.     MSAMQueueRef* = LONGINT;
  36.  
  37. (* identifies slots managed by a PMSAM *)
  38.     MSAMSlotID* = INTEGER;
  39.  
  40. (* reference to an active mailbox *)
  41.     MailboxRef* = LONGINT;
  42.  
  43. (* identifies slots within a mailbox *)
  44.     MailSlotID* = INTEGER;
  45.  
  46. (* identifies a letter in a mailbox *)
  47.     MailSeqNum* = RECORD
  48.         slotID*:                    MailSlotID;
  49.         seqNum*:                    LONGINT;
  50.     END;
  51.  
  52. (* A MailBuffer is used to describe a buffer used for an IO operation.
  53. The location of the buffer is pointed to by 'buffer'. 
  54. When reading, the size of the buffer is 'bufferSize' 
  55. and the size of data actually read is 'dataSize'.
  56. When writing, the size of data to be written is 'bufferSize' 
  57. and the size of data actually written is 'dataSize'.
  58. *)
  59.     MailBuffer* = RECORD
  60.         bufferSize*:                LONGINT;
  61.         buffer*:                    Types.Ptr;
  62.         dataSize*:                LONGINT;
  63.     END;
  64.  
  65. (* A MailReply is used to describe a commonly used reply buffer format.
  66. It contains a count of tuples followed by an array of tuples.
  67. The format of the tuple itself depends on each particular call.
  68. *)
  69.     MailReply* = RECORD
  70.         tupleCount*:                INTEGER;
  71.         (* tuple[tupleCount] *)
  72.     END;
  73.  
  74. (* Shared Memory Communication Area used when Mail Manager sends 
  75. High Level Events to a PMSAM. 
  76. *)
  77.     SMCA* = RECORD
  78.         smcaLength*:                INTEGER;                                (* includes size of smcaLength field *)
  79.         result*:                    Types.OSErr;
  80.         userBytes*:                LONGINT;
  81.         (*ΔΔ CASE INTEGER OF
  82.         0: ( *)
  83.     END;
  84.     SMCASlot* = RECORD(SMCA)
  85.             slotCID*:                    OCE.CreationID;                            (* for create/modify/delete slot calls *)
  86.            (*ΔΔ );
  87.         1: ( *)
  88.     END;
  89.     SMCAHint* = RECORD(SMCA)
  90.             msgHint*:                    LONGINT;                            (* for kMailEPPCMsgOpened *)
  91.            (*ΔΔ );*)
  92.     END;
  93.  
  94. (**************************************************************************************)
  95. (* Value of creator and types fields for messages and blocks defined by MailManager *)
  96.  
  97. CONST
  98.     kMailAppleMailCreator*        = LONG("apml");                        (* message and letter block creator *)
  99.     kMailLtrMsgType*                = LONG("lttr");                        (* message type of letters, reports *)
  100.     kMailLtrHdrType*                = LONG("lthd");                        (* contains letter header *)
  101.     kMailContentType*            = LONG("body");                        (* contains content of letter *)
  102.     kMailEnclosureListType*        = LONG("elst");                        (* contains list of enclosures *)
  103.     kMailEnclosureDesktopType*    = LONG("edsk");                        (* contains desktop mgr info for enclosures *)
  104.     kMailEnclosureFileType*        = LONG("asgl");                        (* contains a file enclosure *)
  105. (* format is defined by AppleSingle *)
  106.     kMailImageBodyType*            = LONG("imag");                        (* contains image of letter *)
  107. (*        format is struct Printing.TPfPgDir - in Printing.h
  108.     *    struct Printing.TPfPgDir (
  109.     *        short    pageCount;        - number of pages in the image.
  110.     *        long    iPgPos[129];    - iPgPos[n] is the offset from the start of the block
  111.     *                                - to image of page n.
  112.     *                                - iPgPos[n+1] - iPgPos[n] is the length of page n.
  113. *)
  114.     kMailMSAMType*                = LONG("gwyi");                        (* contains msam specific information *)
  115.     kMailTunnelLtrType*            = LONG("tunl");                        (* used to read a tunnelled message *)
  116.     kMailHopInfoType*            = LONG("hopi");                        (* used to read hopInfo for a tunnelled message *)
  117.     kMailReportType*                = LONG("rpti");                        (* contains report info *)
  118. (*
  119. Reports have the isReport bit set in MailIndications and contain a block of type kMailReport.
  120. This block has a header, IPMReportBlockHeader,
  121. followed by an array of elements, each of type IPMRecipientReport
  122.  
  123. Various families used by mail or related msgs
  124. *)
  125.     kMailFamily*                    = LONG("mail");                        (* Defines family of "mail" msgs*: content, header, etc *)
  126.     kMailFamilyFile*                = LONG("file");
  127.  
  128. (**************************************************************************************)
  129.     
  130. TYPE
  131.     MailAttributeID* = INTEGER;
  132.  
  133. (* Values of MailAttributeID *)
  134. (* Message store attributes - stored in the catalog *)
  135. (* Will always be present in a letter and have fixed sizes *)
  136.  
  137. CONST
  138.     kMailLetterFlagsBit*            = 1;                            (* MailLetterFlags *)
  139. (* Letter attributes - stored in the letter 
  140.    Will always be present in a letter and have fixed sizes *)
  141.     kMailIndicationsBit*            = 3;                            (* MailIndications *)
  142.     kMailMsgTypeBit*                = 4;                            (* OCECreatorType *)
  143.     kMailLetterIDBit*            = 5;                            (* MailLetterID *)
  144.     kMailSendTimeStampBit*        = 6;                            (* MailTime *)
  145.     kMailNestingLevelBit*        = 7;                            (* MailNestingLevel *)
  146.     kMailMsgFamilyBit*            = 8;                            (* Types.OSType *)
  147. (* Letter attributes - stored in the letter
  148.    May be present in a letter and have fixed sizes *)
  149.     kMailReplyIDBit*                = 9;                            (* MailLetterID *)
  150.     kMailConversationIDBit*        = 10;                            (* MailLetterID *)
  151. (* Letter attributes - stored in the letter
  152.    May be present in a letter and have variable length sizes *)
  153.     kMailSubjectBit*                = 11;                            (* RString *)
  154.     kMailFromBit*                = 12;                            (* MailRecipient *)
  155.     kMailToBit*                    = 13;                            (* MailRecipient *)
  156.     kMailCcBit*                    = 14;                            (* MailRecipient *)
  157.     kMailBccBit*                    = 15;                            (* MailRecipient *)
  158.  
  159.     
  160. TYPE
  161.     MailAttributeMask* = LONGINT;
  162.  
  163. (* Values of MailAttributeMask *)
  164.  
  165. CONST
  166.     kMailLetterFlagsMask*        = ASH(1,(kMailLetterFlagsBit - 1));
  167.     kMailIndicationsMask*        = ASH(1,(kMailIndicationsBit - 1));
  168.     kMailMsgTypeMask*            = ASH(1,(kMailMsgTypeBit - 1));
  169.     kMailLetterIDMask*            = ASH(1,(kMailLetterIDBit - 1));
  170.     kMailSendTimeStampMask*        = ASH(1,(kMailSendTimeStampBit - 1));
  171.     kMailNestingLevelMask*        = ASH(1,(kMailNestingLevelBit - 1));
  172.     kMailMsgFamilyMask*            = ASH(1,(kMailMsgFamilyBit - 1));
  173.     kMailReplyIDMask*            = ASH(1,(kMailReplyIDBit - 1));
  174.     kMailConversationIDMask*        = ASH(1,(kMailConversationIDBit - 1));
  175.     kMailSubjectMask*            = ASH(1,(kMailSubjectBit - 1));
  176.     kMailFromMask*                = ASH(1,(kMailFromBit - 1));
  177.     kMailToMask*                    = ASH(1,(kMailToBit - 1));
  178.     kMailCcMask*                    = ASH(1,(kMailCcBit - 1));
  179.     kMailBccMask*                = ASH(1,(kMailBccBit - 1));
  180.  
  181.     
  182. TYPE
  183.     MailAttributeBitmap* = LONGINT;
  184.  
  185. (**************************************************************************************)
  186.     MailLetterSystemFlags* = INTEGER;
  187.  
  188. (* Values of MailLetterSystemFlags *)
  189. (* letter is available locally (either by nature or via cache) *)
  190.  
  191. CONST
  192.     kMailIsLocalBit*                = 2;
  193.  
  194.     kMailIsLocalMask*            = ASH(1,kMailIsLocalBit);
  195.  
  196.     
  197. TYPE
  198.     MailLetterUserFlags* = INTEGER;
  199.  
  200.  
  201. CONST
  202.     kMailReadBit*                = 0;                            (* this letter has been opened *)
  203.     kMailDontArchiveBit*            = 1;                            (* this letter is not *)
  204. (* to be archived either because 
  205.                                            it has already been archived or 
  206.                                            it should not be archived. *)
  207.     kMailInTrashBit*                = 2;                            (* this letter is in trash *)
  208.  
  209. (* Values of MailLetterUserFlags *)
  210.     kMailReadMask*                = ASH(1,kMailReadBit);
  211.     kMailDontArchiveMask*        = ASH(1,kMailDontArchiveBit);
  212.     kMailInTrashMask*            = ASH(1,kMailInTrashBit);
  213.  
  214.  
  215. TYPE
  216.     MailLetterFlags* = RECORD
  217.         sysFlags*:                MailLetterSystemFlags;
  218.         userFlags*:                MailLetterUserFlags;
  219.     END;
  220.  
  221.     MailMaskedLetterFlags* = RECORD
  222.         flagMask*:                MailLetterFlags;                        (* flags that are to be set *)
  223.         flagValues*:                MailLetterFlags;                        (* and their values *)
  224.     END;
  225.  
  226.  
  227. CONST
  228.     kMailOriginalInReportBit*    = 1;
  229.     kMailNonReceiptReportsBit*    = 3;
  230.     kMailReceiptReportsBit*        = 4;
  231.     kMailForwardedBit*            = 5;
  232.     kMailPriorityBit*            = 6;
  233.     kMailIsReportWithOriginalBit* = 8;
  234.     kMailIsReportBit*            = 9;
  235.     kMailHasContentBit*            = 10;
  236.     kMailHasSignatureBit*        = 11;
  237.     kMailAuthenticatedBit*        = 12;
  238.     kMailSentBit*                = 13;
  239.  
  240. (* Values of MailIndications *)
  241.     kMailSentMask*                = ASH(1,kMailSentBit-1);
  242.     kMailAuthenticatedMask*        = ASH(1,kMailAuthenticatedBit-1);
  243.     kMailHasSignatureMask*        = ASH(1,kMailHasSignatureBit-1);
  244.     kMailHasContentMask*            = ASH(1,kMailHasContentBit-1);
  245.     kMailIsReportMask*            = ASH(1,kMailIsReportBit-1);
  246.     kMailIsReportWithOriginalMask* = ASH(1,kMailIsReportWithOriginalBit-1);
  247.     kMailPriorityMask*            = 3 * ASH(1,kMailPriorityBit-1);
  248.     kMailForwardedMask*            = ASH(1,kMailForwardedBit-1);
  249.     kMailReceiptReportsMask*        = ASH(1,kMailReceiptReportsBit-1);
  250.     kMailNonReceiptReportsMask*    = ASH(1,kMailNonReceiptReportsBit-1);
  251.     kMailOriginalInReportMask*    = 3 * ASH(1,kMailOriginalInReportBit-1);
  252.  
  253.     
  254. TYPE
  255.     MailIndications* = LONGINT;
  256.  
  257. (* values of the field originalInReport in MailIndications *)
  258.  
  259. CONST
  260.     kMailNoOriginal*                = 0;                            (* do not enclose original in reports *)
  261.     kMailEncloseOnNonReceipt*    = 3;                            (* enclose original in non-delivery reports *)
  262.  
  263.     
  264. TYPE
  265.     MailLetterID* = OCEMessaging.IPMMsgID;
  266.  
  267.     MailTime* = RECORD
  268.         time*:                    OCE.UTCTime;                                (* current UTC(GMT) time *)
  269.         offset*:                    OCE.UTCOffset;                                (* offset from GMT *)
  270.     END;
  271.  
  272. (* innermost letter has nestingLevel 0 *)
  273.     MailNestingLevel* = INTEGER;
  274.  
  275.     MailRecipient* = OCEMessaging.OCERecipient;
  276.  
  277. (**************************************************************************************)
  278.  
  279. CONST
  280.     kMailTextSegmentBit*            = 0;
  281.     kMailPictSegmentBit*            = 1;
  282.     kMailSoundSegmentBit*        = 2;
  283.     kMailStyledTextSegmentBit*    = 3;
  284.     kMailMovieSegmentBit*        = 4;
  285.  
  286.     
  287. TYPE
  288.     MailSegmentMask* = INTEGER;
  289.  
  290. (* Values of MailSegmentMask *)
  291.  
  292. CONST
  293.     kMailTextSegmentMask*        = ASH(1,kMailTextSegmentBit);
  294.     kMailPictSegmentMask*        = ASH(1,kMailPictSegmentBit);
  295.     kMailSoundSegmentMask*        = ASH(1,kMailSoundSegmentBit);
  296.     kMailStyledTextSegmentMask*    = ASH(1,kMailStyledTextSegmentBit);
  297.     kMailMovieSegmentMask*        = ASH(1,kMailMovieSegmentBit);
  298.  
  299.     
  300. TYPE
  301.     MailSegmentType* = INTEGER;
  302.  
  303. (* Values of MailSegmentType *)
  304.  
  305. CONST
  306.     kMailInvalidSegmentType*        = 0;
  307.     kMailTextSegmentType*        = 1;
  308.     kMailPictSegmentType*        = 2;
  309.     kMailSoundSegmentType*        = 3;
  310.     kMailStyledTextSegmentType*    = 4;
  311.     kMailMovieSegmentType*        = 5;
  312.  
  313. (**************************************************************************************)
  314.     kMailErrorLogEntryVersion*    = $101;
  315.     kMailMSAMErrorStringListID*    = 128;                            (* These LONG("STR#") resources should be *)
  316.     kMailMSAMActionStringListID*    = 129;                            (* in the PMSAM resource fork *)
  317.  
  318.     
  319. TYPE
  320.     MailLogErrorType* = INTEGER;
  321.  
  322. (* Values of MailLogErrorType *)
  323.  
  324. CONST
  325.     kMailELECorrectable*            = 0;
  326.     kMailELEError*                = 1;
  327.     kMailELEWarning*                = 2;
  328.     kMailELEInformational*        = 3;
  329.  
  330.     
  331. TYPE
  332.     MailLogErrorCode* = INTEGER;
  333.  
  334. (* Values of MailLogErrorCode *)
  335.  
  336. CONST
  337.     kMailMSAMErrorCode*            = 0;                            (* positive codes are indices into
  338.                                                    PMSAM defined strings *)
  339.     kMailMiscError*                = -1;                            (* negative codes are OCE defined *)
  340.     kMailNoModem*                = -2;                            (* modem required, but missing *)
  341.  
  342.  
  343. TYPE
  344.     MailErrorLogEntryInfo* = RECORD
  345.         version*:                INTEGER;
  346.         timeOccurred*:            OCE.UTCTime;                                (* do not fill in *)
  347.         reportingPMSAM*:            Types.Str31;                                    (* do not fill in *)
  348.         reportingMSAMSlot*:        Types.Str31;                                    (* do not fill in *)
  349.         errorType*:                MailLogErrorType;
  350.         errorCode*:                MailLogErrorCode;
  351.         errorResource*:            INTEGER;                                (* resources are valid if *)
  352.         actionResource*:            INTEGER;                                (* errorCode* = kMailMSAMErrorCode
  353.                                                    index starts from 1 *)
  354.         filler*:                    LONGINT;
  355.         filler2*:                INTEGER;
  356.     END;
  357.  
  358. (**************************************************************************************)
  359.     MailBlockMode* = INTEGER;
  360.  
  361. (* Values of MailBlockMode *)
  362.  
  363. CONST
  364.     kMailFromStart*                = 1;                            (* write data from offset calculated from *)
  365.     kMailFromLEOB*                = 2;                            (* start of block, end of block, *)
  366.     kMailFromMark*                = 3;                            (* or from the current mark *)
  367.  
  368.  
  369. TYPE
  370.     MailEnclosureInfo* = RECORD
  371.         enclosureName*:            Types.StringPtr;
  372.         catInfo*:                Files.CInfoPBPtr;
  373.         comment*:                Types.StringPtr;
  374.         icon*:                    Types.Ptr;
  375.     END;
  376.  
  377. (**************************************************************************************)
  378.  
  379. CONST
  380.     kOCESetupLocationNone*        = 0;                            (* disconnect state *)
  381.     kOCESetupLocationMax*        = 8;                            (* maximum location value *)
  382.  
  383.     
  384. TYPE
  385.     OCESetupLocation* = CHAR;
  386.  
  387. (* location state is a bitmask, 0x1=>1st location active, 
  388.  * 0x2 => 2nd, 0x4 => 3rd, etc.
  389.  *)
  390.     MailLocationFlags* = CHAR;
  391.  
  392.     MailLocationInfo* = RECORD
  393.         location*:                OCESetupLocation;
  394.         active*:                    Types.SInt8; (* MailLocationFlags *)
  395.     END;
  396.  
  397. (**************************************************************************************)
  398. (* Definitions for Personal MSAMs *)
  399. (**************************************************************************************)
  400.  
  401. CONST
  402.     kMailEPPCMsgVersion*            = 3;
  403.  
  404.  
  405. TYPE
  406.     MailEPPCMsg* = RECORD
  407.         version*:                INTEGER;
  408.         (*ΔΔ CASE INTEGER OF
  409.         0: ( *)
  410.     END;
  411.     MailEPPCMsgSMCA* = RECORD(MailEPPCMsg)
  412.             theSMCA*:                    POINTER TO SMCA;                                (* for LONG("crsl"), LONG("mdsl"), LONG("dlsl"), LONG("sndi"), LONG("msgo"), LONG("admn") *)
  413.            (*ΔΔ );
  414.         1: ( *)
  415.     END;
  416.     MailEPPCMsgSequence* = RECORD(MailEPPCMsg)
  417.             sequenceNumber*:                LONGINT;                            (* for LONG("inqu"), LONG("dlom") *)
  418.            (*ΔΔ );
  419.         2: ( *)
  420.     END;
  421.     MailEPPCMsgLocation* = RECORD(MailEPPCMsg)
  422.             locationInfo*:                MailLocationInfo;                    (* for LONG("locc") *)
  423.            (*ΔΔ );*)
  424.     END;
  425.  
  426. (* Values of OCE defined High Level Event message classes *)
  427.  
  428. CONST
  429.     kMailEPPCCreateSlot*            = LONG("crsl");
  430.     kMailEPPCModifySlot*            = LONG("mdsl");
  431.     kMailEPPCDeleteSlot*            = LONG("dlsl");
  432.     kMailEPPCShutDown*            = LONG("quit");
  433.     kMailEPPCMailboxOpened*        = LONG("mbop");
  434.     kMailEPPCMailboxClosed*        = LONG("mbcl");
  435.     kMailEPPCMsgPending*            = LONG("msgp");
  436.     kMailEPPCSendImmediate*        = LONG("sndi");
  437.     kMailEPPCContinue*            = LONG("cont");
  438.     kMailEPPCSchedule*            = LONG("sked");
  439.     kMailEPPCAdmin*                = LONG("admn");
  440.     kMailEPPCInQUpdate*            = LONG("inqu");
  441.     kMailEPPCMsgOpened*            = LONG("msgo");
  442.     kMailEPPCDeleteOutQMsg*        = LONG("dlom");
  443.     kMailEPPCWakeup*                = LONG("wkup");
  444.     kMailEPPCLocationChanged*    = LONG("locc");
  445.  
  446.  
  447. TYPE
  448.     MailTimer* = RECORD
  449.         (*ΔΔ CASE INTEGER OF
  450.         0: ( *)
  451.             frequency*:                    LONGINT;                            (* how often to connect *)
  452.            (*ΔΔ );
  453.         1: (
  454.             connectTime*:                LONGINT;                            (* time since midnight *)
  455.            );*)
  456.     END;
  457.  
  458.  
  459. CONST
  460.     kMailTimerOff*                = 0;                            (* control is off *)
  461.     kMailTimerTime*                = 1;                            (* specifies connect time (relative to midnight) *)
  462.     kMailTimerFrequency*            = 2;                            (* specifies connect frequency *)
  463.  
  464.     
  465. TYPE
  466.     MailTimerKind* = Types.Byte;
  467.  
  468.     MailTimers* = RECORD
  469.         sendTimeKind*:            Types.SInt8; (* MailTimerKind *)                (* either kMailTimerTime or kMailTimerFrequency *)
  470.         receiveTimeKind*:        Types.SInt8; (* MailTimerKind *)                (* either kMailTimerTime or kMailTimerFrequency *)
  471.         send*:                    MailTimer;
  472.         receive*:                MailTimer;
  473.     END;
  474.  
  475.     MailStandardSlotInfoAttribute* = RECORD
  476.         version*:                INTEGER;
  477.         active*:                    Types.SInt8; (* MailLocationFlags *)            (* active if MailLocationMask(i) is set *)
  478.         padByte*:                Types.SInt8; (* Types.Byte *)
  479.         sendReceiveTimer*:        MailTimers;
  480.     END;
  481.  
  482.     PMSAMGetMSAMRecordPB* = RECORD
  483.         qLink*:                    Types.Ptr;
  484.         reservedH1*:                LONGINT;
  485.         reservedH2*:                LONGINT;
  486.         ioCompletion*:            MSAMIOCompletionUPP;
  487.         ioResult*:                Types.OSErr;
  488.         saveA5*:                    LONGINT;
  489.         reqCode*:                INTEGER;
  490.         msamCID*:                OCE.CreationID;
  491.     END;
  492.  
  493.     PMSAMOpenQueuesPB* = RECORD
  494.         qLink*:                    Types.Ptr;
  495.         reservedH1*:                LONGINT;
  496.         reservedH2*:                LONGINT;
  497.         ioCompletion*:            MSAMIOCompletionUPP;
  498.         ioResult*:                Types.OSErr;
  499.         saveA5*:                    LONGINT;
  500.         reqCode*:                INTEGER;
  501.         inQueueRef*:                MSAMQueueRef;
  502.         outQueueRef*:            MSAMQueueRef;
  503.         msamSlotID*:                MSAMSlotID;
  504.         filler*:                    ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF LONGINT;
  505.     END;
  506.  
  507.     PMSAMStatus* = INTEGER;
  508.  
  509. (* Values of PMSAMStatus *)
  510.  
  511. CONST
  512.     kPMSAMStatusPending*            = 1;                            (* for inQueue and outQueue *)
  513.     kPMSAMStatusError*            = 2;                            (* for inQueue and outQueue *)
  514.     kPMSAMStatusSending*            = 3;                            (* for outQueue only *)
  515.     kPMSAMStatusCaching*            = 4;                            (* for inQueue only *)
  516.     kPMSAMStatusSent*            = 5;                            (* for outQueue only *)
  517.  
  518.  
  519. TYPE
  520.     PMSAMSetStatusPB* = RECORD
  521.         qLink*:                    Types.Ptr;
  522.         reservedH1*:                LONGINT;
  523.         reservedH2*:                LONGINT;
  524.         ioCompletion*:            MSAMIOCompletionUPP;
  525.         ioResult*:                Types.OSErr;
  526.         saveA5*:                    LONGINT;
  527.         reqCode*:                INTEGER;
  528.         queueRef*:                MSAMQueueRef;
  529.         seqNum*:                    LONGINT;
  530.         msgHint*:                LONGINT;                                (* for posting cache error,set this to 0 when report outq status *)
  531.         status*:                    PMSAMStatus;
  532.     END;
  533.  
  534.     PMSAMLogErrorPB* = RECORD
  535.         qLink*:                    Types.Ptr;
  536.         reservedH1*:                LONGINT;
  537.         reservedH2*:                LONGINT;
  538.         ioCompletion*:            MSAMIOCompletionUPP;
  539.         ioResult*:                Types.OSErr;
  540.         saveA5*:                    LONGINT;
  541.         reqCode*:                INTEGER;
  542.         msamSlotID*:                MSAMSlotID;                                (* 0 for PMSAM errors *)
  543.         logEntry*:                POINTER TO MailErrorLogEntryInfo;
  544.         filler*:                    ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF LONGINT;
  545.     END;
  546.  
  547. (****************************************************************************************)
  548.  
  549. CONST
  550.     kMailMsgSummaryVersion*        = 1;
  551.  
  552.  
  553. TYPE
  554.     MailMasterData* = RECORD
  555.         attrMask*:                MailAttributeBitmap;                    (* indicates attributes present in MsgSummary *)
  556.         messageID*:                MailLetterID;
  557.         replyID*:                MailLetterID;
  558.         conversationID*:            MailLetterID;
  559.     END;
  560.  
  561. (* Values for addressedToMe in struct MailCoreData *)
  562.  
  563. CONST
  564.     kAddressedAs_TO*                = $1;
  565.     kAddressedAs_CC*                = $2;
  566.     kAddressedAs_BCC*            = $4;
  567.  
  568.  
  569. TYPE
  570.     MailCoreData* = RECORD
  571.         letterFlags*:            MailLetterFlags;
  572.         messageSize*:            LONGINT;
  573.         letterIndications*:        MailIndications;
  574.         messageType*:            OCEMessaging.OCECreatorType;
  575.         sendTime*:                MailTime;
  576.         messageFamily*:            Types.OSType;
  577.         reserved*:                Types.SInt8; (* unsigned char *)
  578.         addressedToMe*:            Types.SInt8; (* unsigned char *)
  579.         agentInfo*:                ARRAY 6 (*ΔΔ[0..5]ΔΔ*) OF CHAR;                    (* 6 bytes of special info [set to zero]
  580.     * these are variable length and even padded *)
  581.         sender*:                    OCE.RString32;                                (* recipient's entityName (trunc)*)
  582.         subject*:                OCE.RString32;                                (* subject maybe truncated *)
  583.     END;
  584.  
  585.     MSAMMsgSummary* = RECORD
  586.         version*:                INTEGER;                                (* following flags are defaulted by Toolbox *)
  587.         msgDeleted*:                BOOLEAN;                                (* true if msg is to be deleted by PMSAM *)
  588.         msgUpdated*:                BOOLEAN;                                (* true if msgSummary was updated by MailManager *)
  589.         msgCached*:                BOOLEAN;                                (* true if msg is in the slot's InQueue *)
  590.         padByte*:                Types.SInt8; (* Types.Byte *)
  591.         masterData*:                MailMasterData;
  592.         coreData*:                MailCoreData;
  593.     END;
  594.  
  595. (* PMSAM can put up to 128 bytes of private msg summary data *)
  596.  
  597. CONST
  598.     kMailMaxPMSAMMsgSummaryData*    = 128;
  599.  
  600.  
  601. TYPE
  602.     PMSAMCreateMsgSummaryPB* = RECORD
  603.         qLink*:                    Types.Ptr;
  604.         reservedH1*:                LONGINT;
  605.         reservedH2*:                LONGINT;
  606.         ioCompletion*:            MSAMIOCompletionUPP;
  607.         ioResult*:                Types.OSErr;
  608.         saveA5*:                    LONGINT;
  609.         reqCode*:                INTEGER;
  610.         inQueueRef*:                MSAMQueueRef;
  611.         seqNum*:                    LONGINT;                                (* <- seq of the new message *)
  612.         msgSummary*:                POINTER TO MSAMMsgSummary;                        (* attributes and mask filled in *)
  613.         buffer*:                    POINTER TO MailBuffer;                            (* PMSAM specific data to be appended *)
  614.     END;
  615.  
  616.     PMSAMPutMsgSummaryPB* = RECORD
  617.         qLink*:                    Types.Ptr;
  618.         reservedH1*:                LONGINT;
  619.         reservedH2*:                LONGINT;
  620.         ioCompletion*:            MSAMIOCompletionUPP;
  621.         ioResult*:                Types.OSErr;
  622.         saveA5*:                    LONGINT;
  623.         reqCode*:                INTEGER;
  624.         inQueueRef*:                MSAMQueueRef;
  625.         seqNum*:                    LONGINT;
  626.         letterFlags*:            POINTER TO MailMaskedLetterFlags;                    (* if not nil, then set msgStoreFlags *)
  627.         buffer*:                    POINTER TO MailBuffer;                            (* PMSAM specific data to be overwritten *)
  628.     END;
  629.  
  630.     PMSAMGetMsgSummaryPB* = RECORD
  631.         qLink*:                    Types.Ptr;
  632.         reservedH1*:                LONGINT;
  633.         reservedH2*:                LONGINT;
  634.         ioCompletion*:            MSAMIOCompletionUPP;
  635.         ioResult*:                Types.OSErr;
  636.         saveA5*:                    LONGINT;
  637.         reqCode*:                INTEGER;
  638.         inQueueRef*:                MSAMQueueRef;
  639.         seqNum*:                    LONGINT;
  640.         msgSummary*:                POINTER TO MSAMMsgSummary;                        (* if not nil, then read in the msgSummary *)
  641.         buffer*:                    POINTER TO MailBuffer;                            (* PMSAM specific data to be read *)
  642.         msgSummaryOffset*:        INTEGER;                                (* offset of PMSAM specific data
  643.                                                from start of MsgSummary *)
  644.     END;
  645.  
  646. (****************************************************************************************)
  647. (* Definitions for Server MSAMs *)
  648. (**************************************************************************************)
  649.     SMSAMAdminCode* = INTEGER;
  650.  
  651. (* Values of SMSAMAdminCode *)
  652.  
  653. CONST
  654.     kSMSAMNotifyFwdrSetupChange*    = 1;
  655.     kSMSAMNotifyFwdrNameChange*    = 2;
  656.     kSMSAMNotifyFwdrPwdChange*    = 3;
  657.     kSMSAMGetDynamicFwdrParams*    = 4;
  658.  
  659.     
  660. TYPE
  661.     SMSAMSlotChanges* = LONGINT;
  662.  
  663.  
  664. CONST
  665.     kSMSAMFwdrHomeInternetChangedBit* = 0;
  666.     kSMSAMFwdrConnectedToChangedBit* = 1;
  667.     kSMSAMFwdrForeignRLIsChangedBit* = 2;
  668.     kSMSAMFwdrMnMServerChangedBit* = 3;
  669.  
  670. (* Values of SMSAMSlotChanges *)
  671.     kSMSAMFwdrEverythingChangedMask* = -1;
  672.     kSMSAMFwdrHomeInternetChangedMask* = ASH(1,kSMSAMFwdrHomeInternetChangedBit);
  673.     kSMSAMFwdrConnectedToChangedMask* = ASH(1,kSMSAMFwdrConnectedToChangedBit);
  674.     kSMSAMFwdrForeignRLIsChangedMask* = ASH(1,kSMSAMFwdrForeignRLIsChangedBit);
  675.     kSMSAMFwdrMnMServerChangedMask* = ASH(1,kSMSAMFwdrMnMServerChangedBit);
  676.  
  677. (* kSMSAMNotifyFwdrSetupChange *)
  678.  
  679. TYPE
  680.     SMSAMSetupChange* = RECORD
  681.         whatChanged*:            SMSAMSlotChanges;                        (*  --> bitmap of what parameters changed *)
  682.         serverHint*:                AppleTalk.AddrBlock;                                (*  --> try this ADAP server first *)
  683.     END;
  684.  
  685. (* kSMSAMNotifyFwdrNameChange *)
  686.     SMSAMNameChange* = RECORD
  687.         newName*:                OCE.RString;                                (*  --> msams new name *)
  688.         serverHint*:                AppleTalk.AddrBlock;                                (*  --> try this ADAP server first *)
  689.     END;
  690.  
  691. (* kSMSAMNotifyFwdrPasswordChange *)
  692.     SMSAMPasswordChange* = RECORD
  693.         newPassword*:            OCE.RString;                                (*  --> msams new password *)
  694.         serverHint*:                AppleTalk.AddrBlock;                                (*  --> try this ADAP server first *)
  695.     END;
  696.  
  697. (* kSMSAMGetDynamicFwdrParams *)
  698.     SMSAMDynamicParams* = RECORD
  699.         curDiskUsed*:            LONGINT;                                (* <--  amount of disk space used by msam *)
  700.         curMemoryUsed*:            LONGINT;                                (* <--  amount of memory used by msam *)
  701.     END;
  702.  
  703.     SMSAMAdminEPPCRequest* = RECORD
  704.         adminCode*:                SMSAMAdminCode;
  705.         (*ΔΔ CASE INTEGER OF
  706.         0: ( *)
  707.     END;
  708.     SMSAMAdminEPPCRequestSetupChange* = RECORD(SMSAMAdminEPPCRequest)
  709.             setupChange*:                SMSAMSetupChange;
  710.            (*ΔΔ );
  711.         1: ( *)
  712.     END;
  713.     SMSAMAdminEPPCNameChange* = RECORD(SMSAMAdminEPPCRequest)
  714.             nameChange*:                    SMSAMNameChange;
  715.            (*ΔΔ );
  716.         2: ( *)
  717.     END;
  718.     SMSAMAdminEPPCPasswordChange* = RECORD(SMSAMAdminEPPCRequest)
  719.             passwordChange*:                SMSAMPasswordChange;
  720.            (*ΔΔ );
  721.         3: ( *)
  722.     END;
  723.     SMSAMAdminEPPCDynamicParams* = RECORD(SMSAMAdminEPPCRequest)
  724.             dynamicParams*:                SMSAMDynamicParams;
  725.            (*ΔΔ );*)
  726.     END;
  727.  
  728.     SMSAMSetupPB* = RECORD
  729.         qLink*:                    Types.Ptr;
  730.         reservedH1*:                LONGINT;
  731.         reservedH2*:                LONGINT;
  732.         ioCompletion*:            MSAMIOCompletionUPP;
  733.         ioResult*:                Types.OSErr;
  734.         saveA5*:                    LONGINT;
  735.         reqCode*:                INTEGER;
  736.         serverMSAM*:                OCE.RecordIDPtr;
  737.         password*:                OCE.RStringPtr;
  738.         gatewayType*:            Types.OSType;
  739.         gatewayTypeDescription*:    OCE.RStringPtr;
  740.         catalogServerHint*:        AppleTalk.AddrBlock;
  741.     END;
  742.  
  743.     SMSAMStartupPB* = RECORD
  744.         qLink*:                    Types.Ptr;
  745.         reservedH1*:                LONGINT;
  746.         reservedH2*:                LONGINT;
  747.         ioCompletion*:            MSAMIOCompletionUPP;
  748.         ioResult*:                Types.OSErr;
  749.         saveA5*:                    LONGINT;
  750.         reqCode*:                INTEGER;
  751.         msamIdentity*:            OCEAuthDir.AuthIdentity;
  752.         queueRef*:                MSAMQueueRef;
  753.     END;
  754.  
  755.     SMSAMShutdownPB* = RECORD
  756.         qLink*:                    Types.Ptr;
  757.         reservedH1*:                LONGINT;
  758.         reservedH2*:                LONGINT;
  759.         ioCompletion*:            MSAMIOCompletionUPP;
  760.         ioResult*:                Types.OSErr;
  761.         saveA5*:                    LONGINT;
  762.         reqCode*:                INTEGER;
  763.         queueRef*:                MSAMQueueRef;
  764.     END;
  765.  
  766. (****************************************************************************************)
  767. (* Definitions for reading and writing MSAM Letters *)
  768. (****************************************************************************************)
  769.     MSAMEnumeratePB* = RECORD
  770.         qLink*:                    Types.Ptr;
  771.         reservedH1*:                LONGINT;
  772.         reservedH2*:                LONGINT;
  773.         ioCompletion*:            MSAMIOCompletionUPP;
  774.         ioResult*:                Types.OSErr;
  775.         saveA5*:                    LONGINT;
  776.         reqCode*:                INTEGER;
  777.         queueRef*:                MSAMQueueRef;
  778.         startSeqNum*:            LONGINT;
  779.         nextSeqNum*:                LONGINT;
  780.         (* buffer contains a Mail Reply. Each tuple is a 
  781.     MSAMEnumerateInQReply when enumerating the inQueue
  782.     MSAMEnumerateOutQReply when enumerating the outQueue *)
  783.         buffer*:                    MailBuffer;
  784.     END;
  785.  
  786.     MSAMEnumerateInQReply* = RECORD
  787.         seqNum*:                    LONGINT;
  788.         msgDeleted*:                BOOLEAN;                                (* true if msg is to be deleted by PMSAM *)
  789.         msgUpdated*:                BOOLEAN;                                (* true if MsgSummary has been updated by TB *)
  790.         msgCached*:                BOOLEAN;                                (* true if msg is in the incoming queue *)
  791.         padByte*:                Types.SInt8; (* Types.Byte *)
  792.     END;
  793.  
  794.     MSAMEnumerateOutQReply* = RECORD
  795.         seqNum*:                    LONGINT;
  796.         done*:                    BOOLEAN;                                (* true if all responsible recipients have been processed *)
  797.         priority*:                OCEMessaging.IPMPriority;
  798.         msgFamily*:                Types.OSType;
  799.         approxSize*:                LONGINT;
  800.         tunnelForm*:                BOOLEAN;                                (* true if this letter has to be tunnelled *)
  801.         padByte*:                Types.SInt8; (* Types.Byte *)
  802.         nextHop*:                OCE.NetworkSpec;                            (* valid if tunnelForm is true *)
  803.         msgType*:                OCEMessaging.OCECreatorType;
  804.     END;
  805.  
  806.     MSAMDeletePB* = RECORD
  807.         qLink*:                    Types.Ptr;
  808.         reservedH1*:                LONGINT;
  809.         reservedH2*:                LONGINT;
  810.         ioCompletion*:            MSAMIOCompletionUPP;
  811.         ioResult*:                Types.OSErr;
  812.         saveA5*:                    LONGINT;
  813.         reqCode*:                INTEGER;
  814.         queueRef*:                MSAMQueueRef;
  815.         seqNum*:                    LONGINT;
  816.         msgOnly*:                BOOLEAN;                                (* only valid for PMSAM & inQueue *)
  817.         (* set true to delete message but not msgSummary *)
  818.         padByte*:                Types.SInt8; (* Types.Byte *)
  819.         (* only valid for SMSAM & tunnelled messages *)
  820.         result*:                    Types.OSErr;
  821.     END;
  822.  
  823.     MSAMOpenPB* = RECORD
  824.         qLink*:                    Types.Ptr;
  825.         reservedH1*:                LONGINT;
  826.         reservedH2*:                LONGINT;
  827.         ioCompletion*:            MSAMIOCompletionUPP;
  828.         ioResult*:                Types.OSErr;
  829.         saveA5*:                    LONGINT;
  830.         reqCode*:                INTEGER;
  831.         queueRef*:                MSAMQueueRef;
  832.         seqNum*:                    LONGINT;
  833.         mailMsgRef*:                MailMsgRef;
  834.     END;
  835.  
  836.     MSAMOpenNestedPB* = RECORD
  837.         qLink*:                    Types.Ptr;
  838.         reservedH1*:                LONGINT;
  839.         reservedH2*:                LONGINT;
  840.         ioCompletion*:            MSAMIOCompletionUPP;
  841.         ioResult*:                Types.OSErr;
  842.         saveA5*:                    LONGINT;
  843.         reqCode*:                INTEGER;
  844.         mailMsgRef*:                MailMsgRef;
  845.         nestedRef*:                MailMsgRef;
  846.     END;
  847.  
  848.     MSAMClosePB* = RECORD
  849.         qLink*:                    Types.Ptr;
  850.         reservedH1*:                LONGINT;
  851.         reservedH2*:                LONGINT;
  852.         ioCompletion*:            MSAMIOCompletionUPP;
  853.         ioResult*:                Types.OSErr;
  854.         saveA5*:                    LONGINT;
  855.         reqCode*:                INTEGER;
  856.         mailMsgRef*:                MailMsgRef;
  857.     END;
  858.  
  859.     MSAMGetMsgHeaderPB* = RECORD
  860.         qLink*:                    Types.Ptr;
  861.         reservedH1*:                LONGINT;
  862.         reservedH2*:                LONGINT;
  863.         ioCompletion*:            MSAMIOCompletionUPP;
  864.         ioResult*:                Types.OSErr;
  865.         saveA5*:                    LONGINT;
  866.         reqCode*:                INTEGER;
  867.         mailMsgRef*:                MailMsgRef;
  868.         selector*:                Types.SInt8; (* IPMHeaderSelector *)
  869.         filler1*:                BOOLEAN;
  870.         offset*:                    LONGINT;
  871.         buffer*:                    MailBuffer;
  872.         remaining*:                LONGINT;
  873.     END;
  874.  
  875.     MSAMGetAttributesPB* = RECORD
  876.         qLink*:                    Types.Ptr;
  877.         reservedH1*:                LONGINT;
  878.         reservedH2*:                LONGINT;
  879.         ioCompletion*:            MSAMIOCompletionUPP;
  880.         ioResult*:                Types.OSErr;
  881.         saveA5*:                    LONGINT;
  882.         reqCode*:                INTEGER;
  883.         mailMsgRef*:                MailMsgRef;
  884.         requestMask*:            MailAttributeBitmap;                    (* kMailIndicationsBit thru kMailSubjectBit *)
  885.         buffer*:                    MailBuffer;
  886.         (*    buffer returned will contain the attribute values of 
  887.         the attributes indicated in responseMask, 
  888.         from the attribute indicated by the least significant bit set
  889.         to the attribute indicated by the most significant bit set.
  890.         Note that recipients - from, to, cc, bcc cannot be read using
  891.         this call. Use GetRecipients to read these. *)
  892.         responseMask*:            MailAttributeBitmap;
  893.         more*:                    BOOLEAN;
  894.         filler1*:                BOOLEAN;
  895.     END;
  896.  
  897. (* attrID value to get resolved recipient list *)
  898.  
  899. CONST
  900.     kMailResolvedList*            = 0;
  901.  
  902.  
  903. TYPE
  904.     MailOriginalRecipient* = RECORD
  905.         index*:                    INTEGER;
  906.     END;
  907.  
  908. (* Followed by OCEPackedRecipient *)
  909.     MailResolvedRecipient* = RECORD
  910.         index*:                    INTEGER;
  911.         recipientFlags*:            INTEGER;
  912.         responsible*:            BOOLEAN;
  913.         padByte*:                Types.SInt8; (* Types.Byte *)
  914.     END;
  915.  
  916. (* Followed by OCEPackedRecipient *)
  917.     MSAMGetRecipientsPB* = RECORD
  918.         qLink*:                    Types.Ptr;
  919.         reservedH1*:                LONGINT;
  920.         reservedH2*:                LONGINT;
  921.         ioCompletion*:            MSAMIOCompletionUPP;
  922.         ioResult*:                Types.OSErr;
  923.         saveA5*:                    LONGINT;
  924.         reqCode*:                INTEGER;
  925.         mailMsgRef*:                MailMsgRef;
  926.         attrID*:                    MailAttributeID;                        (* kMailFromBit thru kMailBccBit *)
  927.         startIndex*:                INTEGER;                                (* starts at 1 *)
  928.         buffer*:                    MailBuffer;
  929.         (*     buffer contains a Mail Reply. Each tuple is a
  930.         MailOriginalRecipient if getting original recipients 
  931.                                 ie the attrID is kMail[From, To, Cc, Bcc]Bit
  932.         MailResolvedRecipient if getting resolved reicpients
  933.                                 ie the attrID is kMailResolvedList
  934.         Both tuples are word alligned.  *)
  935.         nextIndex*:                INTEGER;
  936.         more*:                    BOOLEAN;
  937.         filler1*:                BOOLEAN;
  938.     END;
  939.  
  940.     MSAMGetContentPB* = RECORD
  941.         qLink*:                    Types.Ptr;
  942.         reservedH1*:                LONGINT;
  943.         reservedH2*:                LONGINT;
  944.         ioCompletion*:            MSAMIOCompletionUPP;
  945.         ioResult*:                Types.OSErr;
  946.         saveA5*:                    LONGINT;
  947.         reqCode*:                INTEGER;
  948.         mailMsgRef*:                MailMsgRef;
  949.         segmentMask*:            MailSegmentMask;
  950.         buffer*:                    MailBuffer;
  951.         textScrap*:                POINTER TO TextEdit.StScrpRec;
  952.         script*:                    Types.ScriptCode;
  953.         segmentType*:            MailSegmentType;
  954.         endOfScript*:            BOOLEAN;
  955.         endOfSegment*:            BOOLEAN;
  956.         endOfContent*:            BOOLEAN;
  957.         filler1*:                BOOLEAN;
  958.         segmentLength*:            LONGINT;                                (* NEW*: <-  valid first call in a segment *)
  959.         segmentID*:                LONGINT;                                (* NEW*: <-> identifier for this segment *)
  960.     END;
  961.  
  962.     MSAMGetEnclosurePB* = RECORD
  963.         qLink*:                    Types.Ptr;
  964.         reservedH1*:                LONGINT;
  965.         reservedH2*:                LONGINT;
  966.         ioCompletion*:            MSAMIOCompletionUPP;
  967.         ioResult*:                Types.OSErr;
  968.         saveA5*:                    LONGINT;
  969.         reqCode*:                INTEGER;
  970.         mailMsgRef*:                MailMsgRef;
  971.         contentEnclosure*:        BOOLEAN;
  972.         padByte*:                Types.SInt8; (* Types.Byte *)
  973.         buffer*:                    MailBuffer;
  974.         endOfFile*:                BOOLEAN;
  975.         endOfEnclosures*:        BOOLEAN;
  976.     END;
  977.  
  978.     MailBlockInfo* = RECORD
  979.         blockType*:                OCEMessaging.OCECreatorType;
  980.         offset*:                    LONGINT;
  981.         blockLength*:            LONGINT;
  982.     END;
  983.  
  984.     MSAMEnumerateBlocksPB* = RECORD
  985.         qLink*:                    Types.Ptr;
  986.         reservedH1*:                LONGINT;
  987.         reservedH2*:                LONGINT;
  988.         ioCompletion*:            MSAMIOCompletionUPP;
  989.         ioResult*:                Types.OSErr;
  990.         saveA5*:                    LONGINT;
  991.         reqCode*:                INTEGER;
  992.         mailMsgRef*:                MailMsgRef;
  993.         startIndex*:                INTEGER;                                (* starts at 1 *)
  994.         buffer*:                    MailBuffer;
  995.         (*     buffer contains a Mail Reply. Each tuple is a MailBlockInfo *)
  996.         nextIndex*:                INTEGER;
  997.         more*:                    BOOLEAN;
  998.         filler1*:                BOOLEAN;
  999.     END;
  1000.  
  1001.     MSAMGetBlockPB* = RECORD
  1002.         qLink*:                    Types.Ptr;
  1003.         reservedH1*:                LONGINT;
  1004.         reservedH2*:                LONGINT;
  1005.         ioCompletion*:            MSAMIOCompletionUPP;
  1006.         ioResult*:                Types.OSErr;
  1007.         saveA5*:                    LONGINT;
  1008.         reqCode*:                INTEGER;
  1009.         mailMsgRef*:                MailMsgRef;
  1010.         blockType*:                OCEMessaging.OCECreatorType;
  1011.         blockIndex*:                INTEGER;
  1012.         buffer*:                    MailBuffer;
  1013.         dataOffset*:                LONGINT;
  1014.         endOfBlock*:                BOOLEAN;
  1015.         padByte*:                Types.SInt8; (* Types.Byte *)
  1016.         remaining*:                LONGINT;
  1017.     END;
  1018.  
  1019. (* YOU SHOULD BE USING THE NEW FORM OF MARK RECIPIENTS
  1020.  * THIS VERSION IS MUCH SLOWER AND KEPT FOR COMPATIBILITY
  1021.  * REASONS.
  1022. *)
  1023. (* not valid for tunnel form letters *)
  1024.     MSAMMarkRecipientsPB* = RECORD
  1025.         qLink*:                    Types.Ptr;
  1026.         reservedH1*:                LONGINT;
  1027.         reservedH2*:                LONGINT;
  1028.         ioCompletion*:            MSAMIOCompletionUPP;
  1029.         ioResult*:                Types.OSErr;
  1030.         saveA5*:                    LONGINT;
  1031.         reqCode*:                INTEGER;
  1032.         queueRef*:                MSAMQueueRef;
  1033.         seqNum*:                    LONGINT;
  1034.         (*     buffer contains a Mail Reply. Each tuple is an unsigned short,
  1035.         the index of a recipient to be marked. *)
  1036.         buffer*:                    MailBuffer;
  1037.     END;
  1038.  
  1039. (* 
  1040.  * same as MSAMMarkRecipients except it takes a mailMsgRef instead of 
  1041.  * queueRef, seqNum 
  1042. *)
  1043. (* not valid for tunnel form letters *)
  1044.     MSAMnMarkRecipientsPB* = RECORD
  1045.         qLink*:                    Types.Ptr;
  1046.         reservedH1*:                LONGINT;
  1047.         reservedH2*:                LONGINT;
  1048.         ioCompletion*:            MSAMIOCompletionUPP;
  1049.         ioResult*:                Types.OSErr;
  1050.         saveA5*:                    LONGINT;
  1051.         reqCode*:                INTEGER;
  1052.         mailMsgRef*:                MailMsgRef;
  1053.         (*     buffer contains a Mail Reply. Each tuple is an unsigned short,
  1054.         the index of a recipient to be marked. *)
  1055.         buffer*:                    MailBuffer;
  1056.     END;
  1057.  
  1058. (****************************************************************************************)
  1059.     MSAMCreatePB* = RECORD
  1060.         qLink*:                    Types.Ptr;
  1061.         reservedH1*:                LONGINT;
  1062.         reservedH2*:                LONGINT;
  1063.         ioCompletion*:            MSAMIOCompletionUPP;
  1064.         ioResult*:                Types.OSErr;
  1065.         saveA5*:                    LONGINT;
  1066.         reqCode*:                INTEGER;
  1067.         queueRef*:                MSAMQueueRef;
  1068.         asLetter*:                BOOLEAN;                                (* indicate if we should create as letter or msg *)
  1069.         filler1*:                BOOLEAN;
  1070.         msgType*:                OCEMessaging.IPMMsgType;                                (* up to application discretion*: must be of IPMSenderTag
  1071.                                            kIPMOSFormatType for asLetter=true *)
  1072.         refCon*:                    LONGINT;                                (* for messages only *)
  1073.         seqNum*:                    LONGINT;                                (* set if creating message in the inQueue *)
  1074.         tunnelForm*:                BOOLEAN;                                (* if true tunnelForm else newForm *)
  1075.         bccRecipients*:            BOOLEAN;                                (* true if creating letter with bcc recipients *)
  1076.         newRef*:                    MailMsgRef;
  1077.     END;
  1078.  
  1079.     MSAMBeginNestedPB* = RECORD
  1080.         qLink*:                    Types.Ptr;
  1081.         reservedH1*:                LONGINT;
  1082.         reservedH2*:                LONGINT;
  1083.         ioCompletion*:            MSAMIOCompletionUPP;
  1084.         ioResult*:                Types.OSErr;
  1085.         saveA5*:                    LONGINT;
  1086.         reqCode*:                INTEGER;
  1087.         mailMsgRef*:                MailMsgRef;
  1088.         refCon*:                    LONGINT;                                (* for messages only *)
  1089.         msgType*:                OCEMessaging.IPMMsgType;
  1090.     END;
  1091.  
  1092.     MSAMEndNestedPB* = RECORD
  1093.         qLink*:                    Types.Ptr;
  1094.         reservedH1*:                LONGINT;
  1095.         reservedH2*:                LONGINT;
  1096.         ioCompletion*:            MSAMIOCompletionUPP;
  1097.         ioResult*:                Types.OSErr;
  1098.         saveA5*:                    LONGINT;
  1099.         reqCode*:                INTEGER;
  1100.         mailMsgRef*:                MailMsgRef;
  1101.     END;
  1102.  
  1103.     MSAMSubmitPB* = RECORD
  1104.         qLink*:                    Types.Ptr;
  1105.         reservedH1*:                LONGINT;
  1106.         reservedH2*:                LONGINT;
  1107.         ioCompletion*:            MSAMIOCompletionUPP;
  1108.         ioResult*:                Types.OSErr;
  1109.         saveA5*:                    LONGINT;
  1110.         reqCode*:                INTEGER;
  1111.         mailMsgRef*:                MailMsgRef;
  1112.         submitFlag*:                BOOLEAN;
  1113.         padByte*:                Types.SInt8; (* Types.Byte *)
  1114.         msgID*:                    MailLetterID;
  1115.     END;
  1116.  
  1117.     MSAMPutMsgHeaderPB* = RECORD
  1118.         qLink*:                    Types.Ptr;
  1119.         reservedH1*:                LONGINT;
  1120.         reservedH2*:                LONGINT;
  1121.         ioCompletion*:            MSAMIOCompletionUPP;
  1122.         ioResult*:                Types.OSErr;
  1123.         saveA5*:                    LONGINT;
  1124.         reqCode*:                INTEGER;
  1125.         mailMsgRef*:                MailMsgRef;
  1126.         replyQueue*:                POINTER TO OCEMessaging.OCERecipient;
  1127.         sender*:                    POINTER TO OCEMessaging.IPMSender;
  1128.         deliveryNotification*:    OCEMessaging.IPMNotificationType;
  1129.         priority*:                OCEMessaging.IPMPriority;
  1130.     END;
  1131.  
  1132.     MSAMPutAttributePB* = RECORD
  1133.         qLink*:                    Types.Ptr;
  1134.         reservedH1*:                LONGINT;
  1135.         reservedH2*:                LONGINT;
  1136.         ioCompletion*:            MSAMIOCompletionUPP;
  1137.         ioResult*:                Types.OSErr;
  1138.         saveA5*:                    LONGINT;
  1139.         reqCode*:                INTEGER;
  1140.         mailMsgRef*:                MailMsgRef;
  1141.         attrID*:                    MailAttributeID;                        (* kMailIndicationsBit thru kMailSubjectBit *)
  1142.         buffer*:                    MailBuffer;
  1143.     END;
  1144.  
  1145.     MSAMPutRecipientPB* = RECORD
  1146.         qLink*:                    Types.Ptr;
  1147.         reservedH1*:                LONGINT;
  1148.         reservedH2*:                LONGINT;
  1149.         ioCompletion*:            MSAMIOCompletionUPP;
  1150.         ioResult*:                Types.OSErr;
  1151.         saveA5*:                    LONGINT;
  1152.         reqCode*:                INTEGER;
  1153.         mailMsgRef*:                MailMsgRef;
  1154.         attrID*:                    MailAttributeID;                        (* kMailFromBit thru kMailBccBit *)
  1155.         recipient*:                POINTER TO MailRecipient;
  1156.         responsible*:            BOOLEAN;                                (* valid for server and message msams only *)
  1157.         filler1*:                BOOLEAN;
  1158.     END;
  1159.  
  1160.     MSAMPutContentPB* = RECORD
  1161.         qLink*:                    Types.Ptr;
  1162.         reservedH1*:                LONGINT;
  1163.         reservedH2*:                LONGINT;
  1164.         ioCompletion*:            MSAMIOCompletionUPP;
  1165.         ioResult*:                Types.OSErr;
  1166.         saveA5*:                    LONGINT;
  1167.         reqCode*:                INTEGER;
  1168.         mailMsgRef*:                MailMsgRef;
  1169.         segmentType*:            MailSegmentType;
  1170.         append*:                    BOOLEAN;
  1171.         padByte*:                Types.SInt8; (* Types.Byte *)
  1172.         buffer*:                    MailBuffer;
  1173.         textScrap*:                POINTER TO TextEdit.StScrpRec;
  1174.         startNewScript*:            BOOLEAN;
  1175.         filler1*:                BOOLEAN;
  1176.         script*:                    Types.ScriptCode;                                (* valid only if startNewScript is true *)
  1177.     END;
  1178.  
  1179.     MSAMPutEnclosurePB* = RECORD
  1180.         qLink*:                    Types.Ptr;
  1181.         reservedH1*:                LONGINT;
  1182.         reservedH2*:                LONGINT;
  1183.         ioCompletion*:            MSAMIOCompletionUPP;
  1184.         ioResult*:                Types.OSErr;
  1185.         saveA5*:                    LONGINT;
  1186.         reqCode*:                INTEGER;
  1187.         mailMsgRef*:                MailMsgRef;
  1188.         contentEnclosure*:        BOOLEAN;
  1189.         padByte*:                Types.SInt8; (* Types.Byte *)
  1190.         hfs*:                    BOOLEAN;                                (* true => in file system, false => in memory *)
  1191.         append*:                    BOOLEAN;
  1192.         buffer*:                    MailBuffer;                                (* Unused if hfs == true *)
  1193.         enclosure*:                Files.FSSpec;
  1194.         addlInfo*:                MailEnclosureInfo;
  1195.     END;
  1196.  
  1197.     MSAMPutBlockPB* = RECORD
  1198.         qLink*:                    Types.Ptr;
  1199.         reservedH1*:                LONGINT;
  1200.         reservedH2*:                LONGINT;
  1201.         ioCompletion*:            MSAMIOCompletionUPP;
  1202.         ioResult*:                Types.OSErr;
  1203.         saveA5*:                    LONGINT;
  1204.         reqCode*:                INTEGER;
  1205.         mailMsgRef*:                MailMsgRef;
  1206.         refCon*:                    LONGINT;                                (* for messages only *)
  1207.         blockType*:                OCEMessaging.OCECreatorType;
  1208.         append*:                    BOOLEAN;
  1209.         filler1*:                BOOLEAN;
  1210.         buffer*:                    MailBuffer;
  1211.         mode*:                    MailBlockMode;                            (* if blockType is kMailTunnelLtrType or kMailHopInfoType
  1212.                                        mode is assumed to be kMailFromMark *)
  1213.         offset*:                    LONGINT;
  1214.     END;
  1215.  
  1216. (****************************************************************************************)
  1217.     MSAMCreateReportPB* = RECORD
  1218.         qLink*:                    Types.Ptr;
  1219.         reservedH1*:                LONGINT;
  1220.         reservedH2*:                LONGINT;
  1221.         ioCompletion*:            MSAMIOCompletionUPP;
  1222.         ioResult*:                Types.OSErr;
  1223.         saveA5*:                    LONGINT;
  1224.         reqCode*:                INTEGER;
  1225.         queueRef*:                MSAMQueueRef;                            (* to distinguish personal and server MSAMs *)
  1226.         mailMsgRef*:                MailMsgRef;
  1227.         msgID*:                    MailLetterID;                            (* kMailLetterIDBit of letter being reported upon *)
  1228.         sender*:                    POINTER TO MailRecipient;                            (* sender of the letter you are creating report on *)
  1229.     END;
  1230.  
  1231.     MSAMPutRecipientReportPB* = RECORD
  1232.         qLink*:                    Types.Ptr;
  1233.         reservedH1*:                LONGINT;
  1234.         reservedH2*:                LONGINT;
  1235.         ioCompletion*:            MSAMIOCompletionUPP;
  1236.         ioResult*:                Types.OSErr;
  1237.         saveA5*:                    LONGINT;
  1238.         reqCode*:                INTEGER;
  1239.         mailMsgRef*:                MailMsgRef;
  1240.         recipientIndex*:            INTEGER;                                (* recipient index in the original letter *)
  1241.         result*:                    Types.OSErr;                                    (* result of sending the recipient *)
  1242.     END;
  1243.  
  1244. (****************************************************************************************)
  1245.     MailWakeupPMSAMPB* = RECORD
  1246.         qLink*:                    Types.Ptr;
  1247.         reservedH1*:                LONGINT;
  1248.         reservedH2*:                LONGINT;
  1249.         ioCompletion*:            MSAMIOCompletionUPP;
  1250.         ioResult*:                Types.OSErr;
  1251.         saveA5*:                    LONGINT;
  1252.         reqCode*:                INTEGER;
  1253.         pmsamCID*:                OCE.CreationID;
  1254.         mailSlotID*:                MailSlotID;
  1255.     END;
  1256.  
  1257.     MailCreateMailSlotPB* = RECORD
  1258.         qLink*:                    Types.Ptr;
  1259.         reservedH1*:                LONGINT;
  1260.         reservedH2*:                LONGINT;
  1261.         ioCompletion*:            MSAMIOCompletionUPP;
  1262.         ioResult*:                Types.OSErr;
  1263.         saveA5*:                    LONGINT;
  1264.         reqCode*:                INTEGER;
  1265.         mailboxRef*:                MailboxRef;
  1266.         timeout*:                LONGINT;
  1267.         pmsamCID*:                OCE.CreationID;
  1268.         smca*:                    SMCA;
  1269.     END;
  1270.  
  1271.     MailModifyMailSlotPB* = RECORD
  1272.         qLink*:                    Types.Ptr;
  1273.         reservedH1*:                LONGINT;
  1274.         reservedH2*:                LONGINT;
  1275.         ioCompletion*:            MSAMIOCompletionUPP;
  1276.         ioResult*:                Types.OSErr;
  1277.         saveA5*:                    LONGINT;
  1278.         reqCode*:                INTEGER;
  1279.         mailboxRef*:                MailboxRef;
  1280.         timeout*:                LONGINT;
  1281.         pmsamCID*:                OCE.CreationID;
  1282.         smca*:                    SMCA;
  1283.     END;
  1284.  
  1285. (****************************************************************************************)
  1286.  
  1287. CONST
  1288.     kPMSAMGetMSAMRecord*            = 1286;
  1289.     kPMSAMOpenQueues*            = 1280;
  1290.     kPMSAMLogError*                = 1313;
  1291.     kPMSAMSetStatus*                = 1319;
  1292.     kPMSAMCreateMsgSummary*        = 1314;
  1293.     kPMSAMPutMsgSummary*            = 1317;
  1294.     kPMSAMGetMsgSummary*            = 1318;
  1295.     kMailWakeupPMSAM*            = 1287;
  1296.     kSMSAMSetup*                    = 1315;
  1297.     kSMSAMStartup*                = 1281;
  1298.     kSMSAMShutdown*                = 1282;
  1299.     kMSAMEnumerate*                = 1283;
  1300.     kMSAMDelete*                    = 1284;
  1301.     kMSAMOpen*                    = 1288;
  1302.     kMSAMOpenNested*                = 1289;
  1303.     kMSAMClose*                    = 1290;
  1304.     kMSAMGetMsgHeader*            = 1297;
  1305.     kMSAMnMarkRecipients*        = 1298;
  1306.     kMSAMGetAttributes*            = 1291;
  1307.     kMSAMGetRecipients*            = 1292;
  1308.     kMSAMGetContent*                = 1293;
  1309.     kMSAMGetEnclosure*            = 1294;
  1310.     kMSAMEnumerateBlocks*        = 1295;
  1311.     kMSAMGetBlock*                = 1296;
  1312.     kMSAMMarkRecipients*            = 1285;
  1313.     kMSAMCreate*                    = 1300;
  1314.     kMSAMBeginNested*            = 1301;
  1315.     kMSAMEndNested*                = 1302;
  1316.     kMSAMSubmit*                    = 1303;
  1317.     kMSAMPutMsgHeader*            = 1309;
  1318.     kMSAMPutAttribute*            = 1304;
  1319.     kMSAMPutRecipient*            = 1305;
  1320.     kMSAMPutContent*                = 1306;
  1321.     kMSAMPutEnclosure*            = 1307;
  1322.     kMSAMPutBlock*                = 1308;
  1323.     kMSAMCreateReport*            = 1311;
  1324.     kMSAMPutRecipientReport*        = 1312;
  1325.     kMailCreateMailSlot*            = 1323;
  1326.     kMailModifyMailSlot*            = 1324;
  1327.  
  1328.  
  1329. TYPE
  1330.     MSAMParam* = RECORD
  1331.         (*ΔΔ CASE INTEGER OF
  1332.         0: ( *)
  1333.             qLink*:                        Types.Ptr;
  1334.             reservedH1*:                    LONGINT;
  1335.             reservedH2*:                    LONGINT;
  1336.             ioCompletion*:                MSAMIOCompletionUPP;
  1337.             ioResult*:                    Types.OSErr;
  1338.             saveA5*:                        LONGINT;
  1339.             reqCode*:                    INTEGER;
  1340.            (*ΔΔ );
  1341.         1: (
  1342.             pmsamGetMSAMRecord*:            PMSAMGetMSAMRecordPB;
  1343.            );
  1344.         2: (
  1345.             pmsamOpenQueues*:            PMSAMOpenQueuesPB;
  1346.            );
  1347.         3: (
  1348.             pmsamSetStatus*:                PMSAMSetStatusPB;
  1349.            );
  1350.         4: (
  1351.             pmsamLogError*:                PMSAMLogErrorPB;
  1352.            );
  1353.         5: (
  1354.             smsamSetup*:                    SMSAMSetupPB;
  1355.            );
  1356.         6: (
  1357.             smsamStartup*:                SMSAMStartupPB;
  1358.            );
  1359.         7: (
  1360.             smsamShutdown*:                SMSAMShutdownPB;
  1361.            );
  1362.         8: (
  1363.             msamEnumerate*:                MSAMEnumeratePB;
  1364.            );
  1365.         9: (
  1366.             msamDelete*:                    MSAMDeletePB;
  1367.            );
  1368.         10: (
  1369.             msamOpen*:                    MSAMOpenPB;
  1370.            );
  1371.         11: (
  1372.             msamOpenNested*:                MSAMOpenNestedPB;
  1373.            );
  1374.         12: (
  1375.             msamClose*:                    MSAMClosePB;
  1376.            );
  1377.         13: (
  1378.             msamGetMsgHeader*:            MSAMGetMsgHeaderPB;
  1379.            );
  1380.         14: (
  1381.             msamGetAttributes*:            MSAMGetAttributesPB;
  1382.            );
  1383.         15: (
  1384.             msamGetRecipients*:            MSAMGetRecipientsPB;
  1385.            );
  1386.         16: (
  1387.             msamGetContent*:                MSAMGetContentPB;
  1388.            );
  1389.         17: (
  1390.             msamGetEnclosure*:            MSAMGetEnclosurePB;
  1391.            );
  1392.         18: (
  1393.             msamEnumerateBlocks*:        MSAMEnumerateBlocksPB;
  1394.            );
  1395.         19: (
  1396.             msamGetBlock*:                MSAMGetBlockPB;
  1397.            );
  1398.         20: (
  1399.             msamMarkRecipients*:            MSAMMarkRecipientsPB;
  1400.            );
  1401.         21: (
  1402.             msamnMarkRecipients*:        MSAMnMarkRecipientsPB;
  1403.            );
  1404.         22: (
  1405.             msamCreate*:                    MSAMCreatePB;
  1406.            );
  1407.         23: (
  1408.             msamBeginNested*:            MSAMBeginNestedPB;
  1409.            );
  1410.         24: (
  1411.             msamEndNested*:                MSAMEndNestedPB;
  1412.            );
  1413.         25: (
  1414.             msamSubmit*:                    MSAMSubmitPB;
  1415.            );
  1416.         26: (
  1417.             msamPutMsgHeader*:            MSAMPutMsgHeaderPB;
  1418.            );
  1419.         27: (
  1420.             msamPutAttribute*:            MSAMPutAttributePB;
  1421.            );
  1422.         28: (
  1423.             msamPutRecipient*:            MSAMPutRecipientPB;
  1424.            );
  1425.         29: (
  1426.             msamPutContent*:                MSAMPutContentPB;
  1427.            );
  1428.         30: (
  1429.             msamPutEnclosure*:            MSAMPutEnclosurePB;
  1430.            );
  1431.         31: (
  1432.             msamPutBlock*:                MSAMPutBlockPB;
  1433.            );
  1434.         32: (
  1435.             msamCreateReport*:            MSAMCreateReportPB;                    (* Reports and Error Handling Calls *)
  1436.            );
  1437.         33: (
  1438.             msamPutRecipientReport*:        MSAMPutRecipientReportPB;
  1439.            );
  1440.         34: (
  1441.             pmsamCreateMsgSummary*:        PMSAMCreateMsgSummaryPB;
  1442.            );
  1443.         35: (
  1444.             pmsamPutMsgSummary*:            PMSAMPutMsgSummaryPB;
  1445.            );
  1446.         36: (
  1447.             pmsamGetMsgSummary*:            PMSAMGetMsgSummaryPB;
  1448.            );
  1449.         37: (
  1450.             wakeupPMSAM*:                MailWakeupPMSAMPB;
  1451.            );
  1452.         38: (
  1453.             createMailSlot*:                MailCreateMailSlotPB;
  1454.            );
  1455.         39: (
  1456.             modifyMailSlot*:                MailModifyMailSlotPB;
  1457.            );*)
  1458.     END;
  1459.  
  1460.     MSAMIOCompletionProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR paramBlock: MSAMParam);
  1461.  
  1462. CONST
  1463.     uppMSAMIOCompletionProcInfo* = $000000C0; (* PROCEDURE (4 byte param); *)
  1464.  
  1465. PROCEDURE CallMSAMIOCompletionProc*(VAR paramBlock: MSAMParam; userRoutine: MSAMIOCompletionUPP);
  1466.     (*$IF NOT GENERATINGCFM*)
  1467.     INLINE PASCAL $205F, $4E90;
  1468.     (*$END*)
  1469.  
  1470. PROCEDURE NewMSAMIOCompletionProc*(userRoutine: MSAMIOCompletionProcPtr): MSAMIOCompletionUPP;
  1471.     (*$IF NOT GENERATINGCFM *)
  1472.     INLINE PASCAL $2E9F;
  1473.     (*$END*)
  1474.  
  1475. PROCEDURE MailCreateMailSlot*(VAR paramBlock: MSAMParam): Types.OSErr;
  1476.     (*$IF NOT GENERATINGCFM*)
  1477.     INLINE PASCAL $7001, $1f00, $3f3c, 1323, $AA5E;
  1478.     (*$END*)
  1479. (* ASYNCHRONOUS ONLY, client must call WaitNextEvent *)
  1480. PROCEDURE MailModifyMailSlot*(VAR paramBlock: MSAMParam): Types.OSErr;
  1481.     (*$IF NOT GENERATINGCFM*)
  1482.     INLINE PASCAL $7001, $1f00, $3f3c, 1324, $AA5E;
  1483.     (*$END*)
  1484. (* ASYNCHRONOUS ONLY, client must call WaitNextEvent *)
  1485. PROCEDURE MailWakeupPMSAM*(VAR paramBlock: MSAMParam): Types.OSErr;
  1486.     (*$IF NOT GENERATINGCFM*)
  1487.     INLINE PASCAL $7001, $1f00, $3f3c, 1287, $AA5E;
  1488.     (*$END*)
  1489. (* Personal MSAM Glue Routines *)
  1490. PROCEDURE PMSAMOpenQueues*(VAR paramBlock: MSAMParam): Types.OSErr;
  1491.     (*$IF NOT GENERATINGCFM*)
  1492.     INLINE PASCAL $7000, $1f00, $3f3c, 1280, $AA5E;
  1493.     (*$END*)
  1494. PROCEDURE PMSAMSetStatus*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1495.     (*$IF NOT GENERATINGCFM*)
  1496.     INLINE PASCAL $3f3c, 1319, $AA5E;
  1497.     (*$END*)
  1498. (* SYNC ONLY *)
  1499. PROCEDURE PMSAMGetMSAMRecord*(VAR paramBlock: MSAMParam): Types.OSErr;
  1500.     (*$IF NOT GENERATINGCFM*)
  1501.     INLINE PASCAL $7000, $1f00, $3f3c, 1286, $AA5E;
  1502.     (*$END*)
  1503. (* Server MSAM Glue Routines *)
  1504. (* SYNC ONLY *)
  1505. PROCEDURE SMSAMSetup*(VAR paramBlock: MSAMParam): Types.OSErr;
  1506.     (*$IF NOT GENERATINGCFM*)
  1507.     INLINE PASCAL $7000, $1f00, $3f3c, 1315, $AA5E;
  1508.     (*$END*)
  1509. (* SYNC ONLY *)
  1510. PROCEDURE SMSAMStartup*(VAR paramBlock: MSAMParam): Types.OSErr;
  1511.     (*$IF NOT GENERATINGCFM*)
  1512.     INLINE PASCAL $7000, $1f00, $3f3c, 1281, $AA5E;
  1513.     (*$END*)
  1514. PROCEDURE SMSAMShutdown*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1515.     (*$IF NOT GENERATINGCFM*)
  1516.     INLINE PASCAL $3f3c, 1282, $AA5E;
  1517.     (*$END*)
  1518. (* Get Interface Glue Routines *)
  1519. PROCEDURE MSAMEnumerate*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1520.     (*$IF NOT GENERATINGCFM*)
  1521.     INLINE PASCAL $3f3c, 1283, $AA5E;
  1522.     (*$END*)
  1523. PROCEDURE MSAMDelete*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1524.     (*$IF NOT GENERATINGCFM*)
  1525.     INLINE PASCAL $3f3c, 1284, $AA5E;
  1526.     (*$END*)
  1527. PROCEDURE MSAMMarkRecipients*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1528.     (*$IF NOT GENERATINGCFM*)
  1529.     INLINE PASCAL $3f3c, 1285, $AA5E;
  1530.     (*$END*)
  1531. PROCEDURE MSAMnMarkRecipients*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1532.     (*$IF NOT GENERATINGCFM*)
  1533.     INLINE PASCAL $3f3c, 1298, $AA5E;
  1534.     (*$END*)
  1535. PROCEDURE MSAMOpen*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1536.     (*$IF NOT GENERATINGCFM*)
  1537.     INLINE PASCAL $3f3c, 1288, $AA5E;
  1538.     (*$END*)
  1539. PROCEDURE MSAMOpenNested*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1540.     (*$IF NOT GENERATINGCFM*)
  1541.     INLINE PASCAL $3f3c, 1289, $AA5E;
  1542.     (*$END*)
  1543. PROCEDURE MSAMClose*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1544.     (*$IF NOT GENERATINGCFM*)
  1545.     INLINE PASCAL $3f3c, 1290, $AA5E;
  1546.     (*$END*)
  1547. PROCEDURE MSAMGetRecipients*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1548.     (*$IF NOT GENERATINGCFM*)
  1549.     INLINE PASCAL $3f3c, 1292, $AA5E;
  1550.     (*$END*)
  1551. PROCEDURE MSAMGetAttributes*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1552.     (*$IF NOT GENERATINGCFM*)
  1553.     INLINE PASCAL $3f3c, 1291, $AA5E;
  1554.     (*$END*)
  1555. PROCEDURE MSAMGetContent*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1556.     (*$IF NOT GENERATINGCFM*)
  1557.     INLINE PASCAL $3f3c, 1293, $AA5E;
  1558.     (*$END*)
  1559. PROCEDURE MSAMGetEnclosure*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1560.     (*$IF NOT GENERATINGCFM*)
  1561.     INLINE PASCAL $3f3c, 1294, $AA5E;
  1562.     (*$END*)
  1563. PROCEDURE MSAMEnumerateBlocks*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1564.     (*$IF NOT GENERATINGCFM*)
  1565.     INLINE PASCAL $3f3c, 1295, $AA5E;
  1566.     (*$END*)
  1567. PROCEDURE MSAMGetBlock*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1568.     (*$IF NOT GENERATINGCFM*)
  1569.     INLINE PASCAL $3f3c, 1296, $AA5E;
  1570.     (*$END*)
  1571. PROCEDURE MSAMGetMsgHeader*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1572.     (*$IF NOT GENERATINGCFM*)
  1573.     INLINE PASCAL $3f3c, 1297, $AA5E;
  1574.     (*$END*)
  1575. (* Put Interface Glue Routines *)
  1576. PROCEDURE MSAMCreate*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1577.     (*$IF NOT GENERATINGCFM*)
  1578.     INLINE PASCAL $3f3c, 1300, $AA5E;
  1579.     (*$END*)
  1580. PROCEDURE MSAMBeginNested*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1581.     (*$IF NOT GENERATINGCFM*)
  1582.     INLINE PASCAL $3f3c, 1301, $AA5E;
  1583.     (*$END*)
  1584. PROCEDURE MSAMEndNested*(VAR paramBlock: MSAMParam): Types.OSErr;
  1585.     (*$IF NOT GENERATINGCFM*)
  1586.     INLINE PASCAL $7000, $1f00, $3f3c, 1302, $AA5E;
  1587.     (*$END*)
  1588. (*  SYNCHRONOUS ONLY *)
  1589. PROCEDURE MSAMSubmit*(VAR paramBlock: MSAMParam): Types.OSErr;
  1590.     (*$IF NOT GENERATINGCFM*)
  1591.     INLINE PASCAL $7000, $1f00, $3f3c, 1303, $AA5E;
  1592.     (*$END*)
  1593. PROCEDURE MSAMPutAttribute*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1594.     (*$IF NOT GENERATINGCFM*)
  1595.     INLINE PASCAL $3f3c, 1304, $AA5E;
  1596.     (*$END*)
  1597. PROCEDURE MSAMPutRecipient*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1598.     (*$IF NOT GENERATINGCFM*)
  1599.     INLINE PASCAL $3f3c, 1305, $AA5E;
  1600.     (*$END*)
  1601. PROCEDURE MSAMPutContent*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1602.     (*$IF NOT GENERATINGCFM*)
  1603.     INLINE PASCAL $3f3c, 1306, $AA5E;
  1604.     (*$END*)
  1605. (*  SYNCHRONOUS ONLY *)
  1606. PROCEDURE MSAMPutEnclosure*(VAR paramBlock: MSAMParam): Types.OSErr;
  1607.     (*$IF NOT GENERATINGCFM*)
  1608.     INLINE PASCAL $7000, $1f00, $3f3c, 1307, $AA5E;
  1609.     (*$END*)
  1610. PROCEDURE MSAMPutBlock*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1611.     (*$IF NOT GENERATINGCFM*)
  1612.     INLINE PASCAL $3f3c, 1308, $AA5E;
  1613.     (*$END*)
  1614. PROCEDURE MSAMPutMsgHeader*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1615.     (*$IF NOT GENERATINGCFM*)
  1616.     INLINE PASCAL $3f3c, 1309, $AA5E;
  1617.     (*$END*)
  1618. (* Reports and Error Handling Glue Routines *)
  1619. PROCEDURE MSAMCreateReport*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1620.     (*$IF NOT GENERATINGCFM*)
  1621.     INLINE PASCAL $3f3c, 1311, $AA5E;
  1622.     (*$END*)
  1623. PROCEDURE MSAMPutRecipientReport*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1624.     (*$IF NOT GENERATINGCFM*)
  1625.     INLINE PASCAL $3f3c, 1312, $AA5E;
  1626.     (*$END*)
  1627. PROCEDURE PMSAMLogError*(VAR paramBlock: MSAMParam): Types.OSErr;
  1628.     (*$IF NOT GENERATINGCFM*)
  1629.     INLINE PASCAL $7000, $1f00, $3f3c, 1313, $AA5E;
  1630.     (*$END*)
  1631. (* MsgSummary Glue Routines *)
  1632. PROCEDURE PMSAMCreateMsgSummary*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1633.     (*$IF NOT GENERATINGCFM*)
  1634.     INLINE PASCAL $3f3c, 1314, $AA5E;
  1635.     (*$END*)
  1636. PROCEDURE PMSAMPutMsgSummary*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1637.     (*$IF NOT GENERATINGCFM*)
  1638.     INLINE PASCAL $3f3c, 1317, $AA5E;
  1639.     (*$END*)
  1640. PROCEDURE PMSAMGetMsgSummary*(VAR paramBlock: MSAMParam; asyncFlag: BOOLEAN): Types.OSErr;
  1641.     (*$IF NOT GENERATINGCFM*)
  1642.     INLINE PASCAL $3f3c, 1318, $AA5E;
  1643.     (*$END*)
  1644.  
  1645. (* $ALIGN RESET*)
  1646. (* $POP*)
  1647.  
  1648.  END OCEMail.
  1649.